/**
 * 
 */
package modelosReusables;

/**
 * Representa un campo de un producto, sin su valor (es decir, no como instancia
 * sino como variable de instancia). Las variables de instancia que lo describen
 * son Nombre (String) y Tipo (Class).
 * 
 * @author inaiberger
 * 
 */
public class CampoDeProducto implements Comparable<CampoDeProducto> {

	private String nombre;
	private Class<?> tipo;

	public CampoDeProducto() {
		this.nombre = null;
		this.tipo = null;
	}

	public CampoDeProducto(final String nombre, final Class<?> tipo) {
		this.nombre = nombre;
		this.tipo = tipo;
	}

	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(final String nombre) {
		this.nombre = nombre;
	}

	public Class<?> getTipo() {
		return this.tipo;
	}

	public void setTipo(final Class<?> tipo) {
		this.tipo = tipo;
	}

	public Object getDefaultValue() {
		try {
			return this.tipo.newInstance();
		} catch (final InstantiationException e) {
			e.printStackTrace();
		} catch (final IllegalAccessException e) {
			e.printStackTrace();
		}
		return null;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see java.lang.Comparable#compareTo(java.lang.Object)
	 */
	@Override
	public int compareTo(final CampoDeProducto o) {
		if (this.nombre.compareTo(o.nombre) > 0)
			return 1;
		else if (this.nombre.compareTo(o.nombre) < 0)
			return -1;
		return 0;
	}


}
